antchfx / htmlquery

htmlquery is golang XPath package for HTML query.
https://github.com/antchfx/xpath
MIT License
723 stars 73 forks source link

How check an object exist or not #27

Open Eghbalii opened 4 years ago

Eghbalii commented 4 years ago

I have problem with this example code: htmlquery.Find(doc, //tbody/tr//td/div[1]/@title) and get this error: invalid memory address or nil pointer dereference.... which is true, but I want to manage it to not stop the process and just ignore and pass through it. or before check for find be sure that is exist. any solution?

zhengchun commented 4 years ago

What is version of your htmlquery and xpath package? //tbody/tr//td/div[1]/@title expression won't panic an error even not found any matching node by the expression. I guess your variable doc is nil. or list your example code to test.

Eghbalii commented 4 years ago

I try to parse some pages.someone are completely ok but some of them haven't div tag in td and that's where I want to solve it. actually i remove [0] and check the length of result. but I interested to know if there is another way. thanks for your quick answer and this great package.

zhengchun commented 4 years ago

Try this method: QueryAll, It will return error if they got an error. https://godoc.org/github.com/antchfx/htmlquery#QueryAll

But your example is strange, htmlquery won't throw nil pointer dereference error event no matching node, like you talked. //tbody/tr//td/div[1]/@title was passed on my local test.